package com.blog.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description Swagger配置类
 * @Author XiaoLin
 * @Date 2021/2/23 14:14
 */

@Configuration
public class Swagger2Configuration {

  //版本
  public static final String VERSION = "1.0.0";

  /**
   * 门户api，接口前缀：portal
   * @return
   */
  @Bean
  public Docket portalApi() {
    return new Docket(DocumentationType.SWAGGER_12)
        .apiInfo(portalApiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.blog.controller.portal"))
        .paths(PathSelectors.any()) // 可以根据url路径设置哪些请求加入文档，忽略哪些请求
        .build()
        .groupName("前端门户");
  }

  private ApiInfo portalApiInfo() {
    return new ApiInfoBuilder()
        .title("博客系统门户接口文档") //设置文档的标题
        .description("门户接口文档") // 设置文档的描述
        .version(VERSION) // 设置文档的版本信息-> 1.0.0 Version information
        .build();
  }


  /**
   * 管理中心api，接口前缀：admin
   *
   * @return
   */
  @Bean
  public Docket adminApi() {
    return new Docket(DocumentationType.SWAGGER_12)
        .apiInfo(adminApiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.blog.controller.admin"))
        .paths(PathSelectors.any()) // 可以根据url路径设置哪些请求加入文档，忽略哪些请求
        .build()
        .groupName("管理中心");
  }


  private ApiInfo adminApiInfo() {
    return new ApiInfoBuilder()
        .title("管理中心接口文档") //设置文档的标题
        .description("管理中心接口") // 设置文档的描述
        .version(VERSION) // 设置文档的版本信息-> 1.0.0 Version information
        .build();
  }


  @Bean
  public Docket UserApi() {
    return new Docket(DocumentationType.SWAGGER_12)
        .apiInfo(userApiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.blog.controller.user"))
        .paths(PathSelectors.any()) // 可以根据url路径设置哪些请求加入文档，忽略哪些请求
        .build()
        .groupName("用户中心");
  }

  private ApiInfo userApiInfo() {
    return new ApiInfoBuilder()
        .title("博客系统用户接口") //设置文档的标题
        .description("用户接口的接口") // 设置文档的描述
        .version(VERSION) // 设置文档的版本信息-> 1.0.0 Version information
        .build();
  }

}